package com.jf.nep.shader;

public class ShaderProgram {
    private int lightVectorLocation;
    private int colorVectorLocation;
    private int normalMatrixLocation;
    private int modelMatrixLocation;
    private int viewMatrixLocation;
    private int projectionMatrixLocation;
    private int programId;
    private int vertexShaderId;
    private int fragmentShaderId;
    
    void setLightVectorLocation(int lightVectorLocation) {
        this.lightVectorLocation = lightVectorLocation;
    }
    void setColorVectorLocation(int colorVectorLocation) {
        this.colorVectorLocation = colorVectorLocation;
    }
    void setNormalMatrixLocation(int normalMatrixLocation) {
        this.normalMatrixLocation = normalMatrixLocation;
    }
    void setModelMatrixLocation(int modelMatrixLocation) {
        this.modelMatrixLocation = modelMatrixLocation;
    }
    void setViewMatrixLocation(int viewMatrixLocation) {
        this.viewMatrixLocation = viewMatrixLocation;
    }
    void setProjectionMatrixLocation(int projectionMatrixLocation) {
        this.projectionMatrixLocation = projectionMatrixLocation;
    }
    void setProgramId(int programId) {
        this.programId = programId;
    }
    void setVertexShaderId(int vertexShaderId) {
        this.vertexShaderId = vertexShaderId;
    }
    void setFragmentShaderId(int fragmentShaderId) {
        this.fragmentShaderId = fragmentShaderId;
    }
    public int getLightVectorLocation() {
        return lightVectorLocation;
    }
    public int getColorVectorLocation() {
        return colorVectorLocation;
    }
    public int getNormalMatrixLocation() {
        return normalMatrixLocation;
    }
    public int getModelMatrixLocation() {
        return modelMatrixLocation;
    }
    public int getViewMatrixLocation() {
        return viewMatrixLocation;
    }
    public int getProjectionMatrixLocation() {
        return projectionMatrixLocation;
    }
    public int getProgramId() {
        return programId;
    }
    int getVertexShaderId() {
        return vertexShaderId;
    }
    int getFragmentShaderId() {
        return fragmentShaderId;
    }
    
    @Override
    public int hashCode() {
        return programId;
    }
    
    @Override
    public boolean equals(Object o) {
        return (o instanceof ShaderProgram) && ((ShaderProgram)o).programId == programId;
    }
}
